﻿project(QtForm VERSION 1.2.3)

aux_source_directory("./src" SRC_FILES)
add_executable(${PROJECT_NAME} WIN32 ${SRC_FILES})

target_include_directories(${PROJECT_NAME}
	PRIVATE
	"${CMAKE_SOURCE_DIR}/uic")

######################################################
#配置文件生成头文件
######################################################
option(USE_COMPONENT "the option of using Component" ON)
if(USE_COMPONENT)
	set(COMPONENT_STRING "goodbye hello hey")
endif()
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/resource/Config.h.in"
	"${CMAKE_CURRENT_SOURCE_DIR}/src/Config.h" 
	@ONLY)

######################################################
#引入Qt库 Find_Qt和Config_Qt在主CMakeLists文件中
######################################################
set(QT_PATH "D:/Qt/Qt5.9.3/5.9.3/msvc2013_64/lib/cmake/Qt5")
set(QT_COMONENTS "Core" "Widgets" "Gui")
cmake_language(CALL Find_Qt  ${QT_PATH} ${QT_COMONENTS})
cmake_language(CALL Config_Qt  ${PROJECT_NAME} ${QT_COMONENTS})

######################################################
#ui文件生成头文件
######################################################

#方法一：
#configure过程中生成头文件
# find_program(UIC_EXE name "uic.exe" REQUIRED)
# exec_program(${UIC_EXE} ARGS "${CMAKE_CURRENT_SOURCE_DIR}/resource/MyWidget.ui"
# 		"-o ${CMAKE_SOURCE_DIR}/uic/MyWidget.h" )

#方法二：
#build过程中生成头文件
add_custom_command(OUTPUT "CreateUIHeader"
	COMMAND "uic.exe" "${CMAKE_CURRENT_SOURCE_DIR}/resource/MyWidget.ui" ">${CMAKE_SOURCE_DIR}/uic/ui_MyWidget.h")
add_custom_target(uiFile DEPENDS "CreateUIHeader")

#方法三：
#AUTOUIC方法
#把包含ui_<uifilename>.h的cpp添加到target中，当target build过程中即可自动生成
#target是界面程序，那么每次都需要build才能查找到头文件。
#add_executable(${PROJECT_NAME} WIN32 ${SRC_FILES})
#set_target_properties(target_name
#        PROPERTIES
#        AUTOUIC_SEARCH_PATHS ${CMAKE_CURRENT_SOURCE_DIR}/resource)

######################################################
#翻译文件生成，ts文件和qm文件
#要求使用LinguistTools组件
######################################################
find_package(Qt5LinguistTools)
#lupdate进行生成ts文件
#lrelease进行生成qm文件
qt5_create_translation(QM_FILES "${PROJECT_SOURCE_DIR}/src" ${TS_FILES} )
#set(QM_FILES1 "${CMAKE_SOURCE_DIR}/resource/en.qm")
qt5_add_translation(QM_FILES ${TS_FILES})
#将已有的ts文件翻译成qm文件
#qt5_add_translation(Translate ${SMTPLUGIN_SOURCE} "en.ts")
add_custom_target(ts DEPENDS ${TS_FILES}) #生成ts文件的target
add_custom_target(qm DEPENDS ${QM_FILES}) #生成qm文件的target

add_dependencies(${PROJECT_NAME} ts qm uiFile)